import { post } from '@/utils/http'

/**
 * 用户登录
 * @param {Object} data 登录信息
 * @param {string} data.account 账号
 * @param {string} data.password 密码
 * @returns {Promise}
 */
export function loginAPI(data) {
  return post('sys/sys-client/api/loginInfo/login', data)
}

/**
 * 根据用户ID获取用户完整信息（包括基本信息、权限列表和角色列表）
 * @param {number} userId 用户ID
 * @returns {Promise}
 */
export function getUserInfoAPI(userId) {
  return post('sys/sys-client/api/loginInfo/getUserInfo', { userId })
}


/**
 * 用户管理
 *
 */
export function getUserListAPI() {
  return post('sys/sys-client/api/sysUser/listAll')
}

/**
 * 添加用户
 * @param {Object} data 用户信息
 * @returns {Promise}
 */
export function addUserAPI(data) {
  return post('sys/sys-client/api/sysUser/add', data)
}

/**
 * 更新用户状态
 * @param {Object} data 用户ID和状态信息
 * @returns {Promise}
 */
export function updateUserStatusAPI(data) {
  return post('sys/sys-client/api/sysUser/updateStatus', data)
}

/**
 * 更新用户信息
 * @param {Object} data 用户信息
 * @returns {Promise}
 */
export function updateUserAPI(data) {
  return post('sys/sys-client/api/sysUser/update', data)
}

/**
 * 删除用户
 * @param {Object} data 用户ID
 * @returns {Promise}
 */
export function deleteUserAPI(data) {
  return post('sys/sys-client/api/sysUser/delete', data)
}

/**
 * 分配用户角色
 * @param {Object} data 用户ID和角色ID
 * @returns {Promise}
 */
export function assignRoleToUserAPI(data) {
  return post('sys/sys-client/api/sysUserRole/assignRole', data)
}

/**
 * 获取用户角色
 * @param {number} userId 用户ID
 * @returns {Promise}
 */
export function getUserRolesAPI(userId) {
  return post('sys/sys-client/api/sysUserRole/getUserRoles', { userId })
}

/**
 * 角色管理
 *
 */

export function getRoleListAPI(params) {
  if (params && params.roleName) {
    // 如果有参数且包含roleName，则使用搜索接口，参数作为请求体传递
    return post('/sys/sys-client/api/sysRole/search', params)
  }
  // 如果没有参数或不包含roleName，则使用获取全部角色接口
  return post('/sys/sys-client/api/sysRole/listAll')
}

/**
 * 添加角色
 * @param {Object} data 角色信息
 * @returns {Promise}
 */
export function addRoleAPI(data) {
  return post('/sys/sys-client/api/sysRole/add', data)
}

/**
 * 更新角色状态
 * @param {Object} data 角色ID和状态信息
 * @returns {Promise}
 */
export function updateRoleStatusAPI(data) {
  return post('/sys/sys-client/api/sysRole/updateStatus', data)
}

/**
 * 更新角色信息
 * @param {Object} data 角色信息
 * @returns {Promise}
 */
export function updateRoleAPI(data) {
  return post('/sys/sys-client/api/sysRole/update', data)
}

/**
 * 删除角色
 * @param {Object} data 角色ID
 * @returns {Promise}
 */
export function deleteRoleAPI(data) {
  return post('/sys/sys-client/api/sysRole/delete', data)
}

/**
 * 获取角色权限列表
 * @param {number} roleId 角色ID
 * @returns {Promise}
 */
export function getRolePermissionsAPI(roleId) {
  return post('/sys/sys-client/api/sysRolePermission/getRolePermissions', { roleId })
}

/**
 * 为角色分配权限
 * @param {Object} data 包含roleId和permissionIds
 * @returns {Promise}
 */
export function assignPermissionsToRoleAPI(data) {
  return post('/sys/sys-client/api/sysRolePermission/assignPermissions', data)
}

/**
 * 权限管理
 *
 */
export function getPermissionListAPI(data) {
  console.log('传递给API的参数:', data); // 添加调试信息
  // 将参数作为查询参数传递而不是请求体
  return post('/sys/sys-client/api/sysPermission/listAll', {}, { params: data })
}

/**
 * 添加权限
 * @param {Object} data 权限信息
 * @returns {Promise}
 */
export function addPermissionAPI(data) {
  return post('/sys/sys-client/api/sysPermission/add', data)
}

/**
 * 更新权限状态
 * @param {Object} data 权限ID和状态信息
 * @returns {Promise}
 */
export function updatePermissionStatusAPI(data) {
  return post('/sys/sys-client/api/sysPermission/updateStatus', data)
}

/**
 * 删除权限
 * @param {Object} data 权限ID
 * @returns {Promise}
 */
export function deletePermissionAPI(data) {
  return post('/sys/sys-client/api/sysPermission/delete', data)
}

/**
 * 更新权限
 * @param {Object} data 权限信息
 * @returns {Promise}
 */
export function updatePermissionAPI(data) {
  return post('/sys/sys-client/api/sysPermission/edit', data)
}

/**
 * 根据名称获取权限列表
 * @param {Object} params 权限名称搜索条件
 * @returns {Promise}
 */
export function listByNameAPI(params) {
  // 将参数作为查询参数传递而不是请求体
  return post('/sys/sys-client/api/sysPermission/listByName', {}, { params })
}

/**
 * 创建账号
 * @param {Object} data 账号信息
 * @param {number} data.userId 用户ID
 * @param {string} data.account 账号
 * @param {string} data.password 密码
 * @returns {Promise}
 */
export function createAccountAPI(data) {
  return post('/sys/sys-client/api/loginInfo/addAccount', data)
}
